const fs = require('fs');
const csv = require('csvtojson')
const MongoClient = require('mongodb').MongoClient; //数据库
const server = require('./config/server'); //数据库配置文件
const collec = 'companymac'; //数据库集合
const file = './docAndOthers/companymac.csv'; //csv解析文件路径
const mongodb = 'mongodb://' + server.mongodb.user +
    ':' +
    server.mongodb.password +
    '@' + server.mongodb.host +
    ':' + server.mongodb.port +
    '/' +
    server.mongodb.database +
    '?authMechanism=' +
    server.mongodb.authMechanism +
    '&authSource=' +
    server.mongodb.authSource; //数据库地址

//定义返回值
let callback = [];
//异步方法
let csvToJSON = async function(csvFile) {
    let jsonArray = await csv().fromFile(csvFile); //异步把csv文件转成json
    jsonArray.forEach(item => {
        let arr = Object.values(item);
        let companyMac = {
            'mac': arr[0].replace(new RegExp('-', 'g'), ':'),
            'company': arr[1].replace('\t', '')
        };
        callback.push(companyMac);
    });
    //连接数据库
    MongoClient.connect(mongodb, {
        useNewUrlParser: true
    }, (err, client) => {
        let db = client.db(server.mongodb.database);
        let collection = db.collection(collec);
        //异步处理删除和新增数据方法
        let status = new Promise((resolve, reject) => {
            collection.deleteMany({}, (err, result) => {
                if (!err) {
                    resolve(true);
                } else {
                    reject(false);
                }
            });
        }).then(res => {
            if (res) {
                //插入数据
                collection.insertMany(callback, (err, doc) => {
                    if (!err) {
                        client.close(); //关闭数据库
                        return true;
                    } else {
                        client.close(); //关闭数据库
                        return false;
                    }
                });
            }
        }).catch(err => {
            console.log('删除、插入数据失败')
        });
    });
}
//异步调用处理csv文件
csvToJSON(file);